package com.eboss2.sbs.core;

////////////////////////////////////////////////////////////////////
//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//              佛祖保佑       永无BUG     永不修改                  //
//                                                                //
//          佛曰:                                                  //
//                  写字楼里写字间，写字间里程序员；                   //
//                  程序人员写程序，又拿程序换酒钱。                   //
//                  酒醒只在网上坐，酒醉还来网下眠；                   //
//                  酒醉酒醒日复日，网上网下年复年。                   //
//                  但愿老死电脑间，不愿鞠躬老板前；                   //
//                  奔驰宝马贵者趣，公交自行程序员。                   //
//                  别人笑我忒疯癫，我笑自己命太贱；                   //
//                  不见满街漂亮妹，哪个归得程序员？                   //
////////////////////////////////////////////////////////////////////

import android.content.Context;

import com.eboss2.sbs.R;
import com.eboss2.sbs.config.Config;
import com.eboss2.sbs.consts.CmdConsts;
import com.eboss2.sbs.interfaces.ActionCallbackListener;
import com.eboss2.sbs.model.ApiResponse;
import com.eboss2.sbs.model.HomeEntity;
import com.eboss2.sbs.model.StkPayRequest;
import com.eboss2.sbs.model.UpgradeEntity;
import com.myokhttp.MyOkHttp;
import com.myokhttp.response.GsonResponseHandler;
import com.mytools.tool.dialog.LoadingDialog;
import com.mytools.tool.utils.EncryptMD5Util;
import com.mytools.tool.utils.LogUtils;

import org.json.JSONObject;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import static android.content.ContentValues.TAG;

/**********************************************************
 * *
 * Created by wucongpeng on 2016/12/4.        *
 **********************************************************/


public class SbsAction {

    private static SbsAction instance;
    private static Context mContext;


    public SbsAction(Context context){
        this.mContext = context;
    }

    public static SbsAction get(Context context){
        if (instance == null) {
            instance = new SbsAction(context);
        }
        return instance;
    }


    public void checkUpgrade(final ActionCallbackListener<UpgradeEntity> listener){

        final LoadingDialog dialog = new LoadingDialog(mContext);
        dialog.show(mContext.getString(R.string.loading_data));


        Map<String, String> params = new HashMap<String, String>();
        params.put("types", Config.UPGRADE_CODE+"");

        JSONObject jsonParams = null;
        jsonParams = new JSONObject(params);

        LogUtils.e("request", jsonParams.toString());
        LogUtils.e("URL", CmdConsts.UPGRADE);


        MyOkHttp.get().postJson(mContext, CmdConsts.UPGRADE, jsonParams.toString(), new GsonResponseHandler<ApiResponse<UpgradeEntity>>() {
            @Override
            public void onFailure(int statusCode, String error_msg) {
                dialog.dismiss();
                listener.onFailure("" + statusCode, error_msg);
            }

            @Override
            public void onSuccess(int statusCode, ApiResponse<UpgradeEntity> response) {
                LogUtils.e("response", response.toString());
                dialog.dismiss();
                listener.onSuccess(response.getResult());
            }
        });
    }



    /**
     * 首页获取数据
     * @param sid
     * @param listener
     */
    public void getHomePageData(int sid, final ActionCallbackListener<HomeEntity> listener){

        final LoadingDialog dialog = new LoadingDialog(mContext);
        dialog.show(mContext.getString(R.string.loading_data));

        Map<String, Object> params = new HashMap<String, Object>();
        params.put("sid", sid);

        String data = getJsonStr(CmdConsts.HOMEPAGE, params, "verify");
        LogUtils.e("request", data);
        LogUtils.e("URL", Config.BasePath);
        MyOkHttp.get().postJson(mContext, Config.BasePath, data, new GsonResponseHandler<ApiResponse<HomeEntity>>() {
            @Override
            public void onSuccess(int statusCode, ApiResponse<HomeEntity> response) {
                LogUtils.e("response", response.toString());
                dialog.dismiss();
                if (response != null) {
                    if (response.getCode().equals("A00006")) {
                        listener.onSuccess(response.getResult());
                    } else {
                        listener.onFailure(response.getCode(), response.getMsg());
                    }
                } else {
                    listener.onFailure("", "链接服务器异常");
                }
            }

            @Override
            public void onFailure(int statusCode, String error_msg) {
                dialog.dismiss();
                listener.onFailure("" + statusCode, error_msg);
            }
        });

    }



    /**
     * 获取到JSON字串
     * @param cmd
     * @param paramsMap
     * @return
     */
    private String getJsonStr(String cmd, Map<String, Object> paramsMap, String sign) {
        JSONObject jsonParams = null;

        ArrayList<String> keys = new ArrayList<String>();
        for (Iterator<String> it = paramsMap.keySet().iterator(); it.hasNext(); ) {
            keys.add(it.next());
        }
        String tmp = "";
        keys = CommonFunc.getSortAsc(keys);
        for (int i = 0; i < keys.size(); i++) {
            Object obj = paramsMap.get(keys.get(i));
            if (obj != null) {
                tmp = tmp + obj.toString();
            } else {
                LogUtils.e(TAG, "getSortAsc obj is null");
            }
        }

        String verify = EncryptMD5Util.MD5(tmp + Config.key);
        paramsMap.put(sign, verify);


        Map<String, Object> final_params = new HashMap<String, Object>();
        final_params.put("cmd", cmd);
        final_params.put("params", paramsMap);

        jsonParams = new JSONObject(final_params);

        return jsonParams.toString();
    }






}





































